package red.book._1._2;

/**
 * 假设输入的都是正确的值那么，
 * 一个int 类型存储长度为32为，
 * 天是 1到31,所以在2^0 到2^5 之间， 所以低5位给月。
 * 月是 1到12,所以在2^0 到2^4 之间， 所以需要占4位。
 * 年是剩下的位置， 即 日期 为 year* 2^(5+4) + month*2^5 + day = 512year + 32month + day , 求年月日 即分别求各个变量的系数。
 * @author wangbingwu
 *
 */
public class Date2 implements Date{
	private final int value;
	
	public Date2(int month, int day, int year) {
		super();
		this.value = year*512 + month*32 + day;
	}
	
	@Override
	public int month() {
		// TODO Auto-generated method stub
		return (value / 32) % 16;
	}

	@Override
	public int day() {
		// TODO Auto-generated method stub
		return value % 32;
	}

	@Override
	public int year() {
		// TODO Auto-generated method stub
		return value / 512;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return month() + "/" + day() + "/" + year();
	}
}
